/**
 * Created by L.jp
 * Description:
 * User: 86189
 * Date: 2022-07-08
 * Time: 10:54
 */
//选择排序算法，每次从待排序的数据元素中选出最小的一个元素，存放在序列的起始位置，
// 然后，再从剩余未排序元素中继续寻找最小元素，然后放到已排序的序列的末尾。
// 以此类推，直到全部待排序的数据元素排序完毕。
    // 基本思想：选择排序是一种不稳定的排序方法。
// 它的基本思想是：从下标0开始，假定最小值是当前元素，从该元素下标的后面选出最小的元素，放到已排序的末尾。
    //时间复杂度：O(n^2)，空间复杂度：O(1)
public class SelectionSort {
    private static void swap(int[] arr, int i, int j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
    private static void printArray(int[] arr) {
        for (int j : arr) {
            System.out.print( j + " " );
        }
        System.out.println();
    }
    private static void selectionSort(int[] arr){
        int n = arr.length;
        for(int i=0;i<n;i++){
            int minValue = i;
            for(int j=i+1;j<n;j++){
                minValue=arr[j]<arr[minValue] ? j : minValue;
            }
            swap( arr, i, minValue);
        }
    }
    public static void main (String[] args) {
        int[] arr={1,3,5,7,9,2,4,6,8,0};
        printArray(arr);
        selectionSort(arr);
        printArray(arr);
    }

}
